package com.yunxin.core.application.dto.product;

import com.yunxin.core.application.command.product.ProductThrowInConfigOperateCommand;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author zero°
 * @since 2023-05-31
 */
@Data
@Schema(description = "产品投放配置对象")
public class ProductThrowInConfigDTO implements Serializable {

    /**
     * 产品id
     */
    @Schema(description = "产品id")
    private Long productId;
    /**
     * 对接方式 1.自营 2.h5 3.api 4.企业微信
     */
    @Schema(description = "对接方式 1.自营 2.h5 3.api 4.企业微信")
    private Integer abutmentType;
    /**
     * 跳转url abutmentType=2/4时必填,为2时为跳转url，为4时为企业微信跳转url
     */
    @Schema(description = "跳转url abutmentType=2/4时必填,为2时为跳转url，为4时为企业微信跳转url")
    private String jumpUrl;
    /**
     * 发送短信状态 1.是 2.否
     */
    @Schema(description = "发送短信状态 1.是 2.否")
    private Integer sendSmsStatus;
    /**
     * 投放平台(,连接)
     */
    @Schema(hidden = true)
    private String placementPlatform;
    /**
     * 投放平台(数组)
     */
    @Schema(description = " 投放平台")
    private List<String> placementPlatformList;
    /**
     * 投放地域类型 1.全国 2.指定城市
     */
    @Schema(description = "投放地域类型 1.全国 2.指定城市")
    private String placementRegionType;
    /**
     * 投放过滤地域(,连接)
     */
    @Schema(hidden = true)
    private String placementRegion;
    /**
     * 投放过滤地域(数组)
     */
    @Schema(description = "投放过滤地域(数组)")
    private List<String> placementRegionList;
    /**
     * 产品总限量
     */
    @Schema(description = "产品总限量")
    private Integer totalLimit;
    /**
     * 产品限日(星期一到星期日,用,号连接)
     */
    @Schema(hidden = true)
    private String limitDay;
    /**
     * 产品限日(星期一到星期日数组)
     */
    @Schema(description = " 产品限日(星期一到星期日,数组)")
    private List<String> limitDayList;
    /**
     * 投放时段类型 1全天，2 区间
     */
    @Schema(description = "投放时段类型 1全天，2 区间")
    private Integer placementPeriodType;

    /**
     * 投放时段
     */
    @Schema(hidden = true)
    private String placementPeriod;

    /**
     * 投放时段
     */
    @Schema(description = "投放时段")
    private List<PlacementPeriod> placementPeriodList;

    /**
     * uv联登产品个人授权协议
     */
    @Schema(hidden = true)
    private String userProtocol;

    /**
     * uv联登产品个人授权协议
     */
    @Schema(description = "uv联登产品个人授权协议")
    private List<userProtocol> userProtocolList;

    /**
     * 权重
     */
    @Schema(description = "权重")
    private Integer weight;


    /**
     * 前置产品id
     */
    @Schema(description = "前置产品id")
    private Long beProductId;

    /**
     * 是否联登
     */
    @Schema(description = "是否联登 1联登 2不联登")
    private Integer isLogin;

    @Data
    public static class PlacementPeriod implements Serializable {

        /**
         * 开始时间
         */
        private String startTime;

        /**
         * 结束时间
         */
        private String endTime;

        //时段控量
        private Integer limitCount;
        //是否限制时段分配数量
        private Integer isLimit;
    }

    @Data
    public static class userProtocol implements Serializable {

        /**
         * uv联登产品个人授权协议名称
         */
        private String name;

        /**
         * uv联登产品个人授权协议地址
         */
        private String url;
    }

}
